The present invention relates to a method for comparing a pattern sequence with a key whose length is not predetermined.
In several fields such as transmission media, computing engines and software, data communications and internetworking, it is necessary to move data in a network depending on routing information which is inserted in a pattern preceding these data. Typical equipments involved in this routing operation are switches and routers.
Today""s data communication systems would not exist without routers which are used to link remote sites but routing is considered to be one of the major bottlenecks in these systems essentially due to the processing time and the required memory.
Routers should be considered in a very broad sense since, within the past few years, they often happen to be replaced by switches. Anyway, routing functions are still needed even on switched networks, at least at boundaries.
A first main routing function is the determination of a routing path across the network using specific protocols. The path determination is based on a variety of metrics such as the delay introduced by the network or the link cost. In addition, this determination takes into account other rules generically called filtering, such as communication restrictions or priority criteria.
A second routing function is frame forwarding, that is to say the processing of inbound data and the subsequent forwarding of these data to the appropriate outbound destination.
In the case of routers, both functions, the determination of the routing path and the frame forwarding, are performed within the same device. Nevertheless, new techniques tend to exploit the differences between these functions, separating the corresponding operations. For instance, a single routing path calculator could support several frame forwarding units.
Now, it appears that routers show some limitations.
As seen before, the processing time is relatively high and is strongly variable from one routing calculation to another one. It is therefore difficult to support many time sensitive applications such as multimedia.
One critical time consuming operation is the searching function. This operation can be seen as the retrieval of routing information located in the pattern, in particular the destination of the data corresponding to this pattern. The searching involves essentially comparisons between a part of this pattern, or sequence, and predetermined bit series, or keys, which identify appropriate routing information. For this reason, efforts have been made to optimize the speed of comparison by using parallel processing but this method has its own limitations.
Another way to speed up the searching function is to proceed with partial comparisons between a sequence and a key instead of looking for a full match.
It is therefore state of the art to search for the longest prefix shared by this sequence and this key.
As an example, such a method is disclosed in the article xe2x80x9cRouting on longest-matching prefixes xe2x80x9d, IEEE/ACM Transactions on Networking, vol. 4, no. 1, February 1996, pages 86-97.
According to this method, a tree is built up which represents the searching process. This tree is made up of nodes linked together according to an arborescent structure of a binary type. Each node, apart from the root which is the top of the tree, is linked to a parent node. In addition, each node is linked with at most two children. A node represents an elementary step (a partial comparison) in the searching process.
At first, this solution needs a lot of memory for storing the required information in each node. As a consequence, this is not really favorable for the optimization of the processing time.
In other respects, the tree is an evolutional structure and it is necessary to be able to both delete and insert nodes. It appears that in the above solution it is not possible to modify the tree while a search is made.
So, it becomes difficult to manage the tree evolution and searching operations.
It is therefore a general object of the present invention to provide for a method for searching for routing information that is simple to implement and which is very fast and needs little memory.
Another object of this invention is to allow data sharing between different units involved in the determination of the routing path or in the result of this determination.
It is still a further object of this invention to make the operations associated with searching easier.
In accordance with the present invention, there is provided a method for comparing a pattern sequence with a variable length key; a first bit of the sequence being identified by a pointer, the length and the location of the key being identified by a code word, this method includes a preliminary step for identifying the sequence and then performing a comparison step.
Proceeding in such a way allows use of a unique type of step of searching keys of different lengths in the pattern.
According to this method, a further step is identified by a first address when the comparison is true.
In a preferred embodiment, the sequence is shifted by a first shifting value equal to the length of the key prior to this further step.
Thus, the further step is prepared while executing the first selection single step.
An improvement of the addressing is such that the first address includes a zone indication.
In the same way, a further step is identified by a second address when the comparison is false.
According to an advantageous arrangement, a predetermined value of a field of the first or second address identifies a part of this address as an external return address.
As an interesting feature, the second address is a predetermined function of the first address.
This solution allows not specifically providing the second address.
In addition, the method provides for an age word associated with the comparison step, which age word is incremented when this step is performed.
This is a way to check if the comparison step is used or not, which is useful information in order to manage the tree evolution. In fact, when a step is never used, it could be suitable to delete it.
In addition, a parent word associated with the comparison step identifies the address of a step preceding the comparison step.
In a preferred embodiment, the parent word includes a zone indication.
This method can also be used in conjunction with other types of steps; in this case, it is convenient to identify the above comparison step by a mode indication.
The method is advantageously implemented on a finite state machine.